GitLab Runner ======================================= There is a different ways to install GitLab Runner on your Kubernetes cluster. One-click install ----------------- If your Kubernetes cluster is connected to your GitLab project you can just: * Navigate to your project's Operations > Kubernetes page. * Click on your connected cluster. * Install Helm Tiller by clicking the install button beside it. * Install GitLab Runner by clicking the install button beside it. Deploy GitLab Runner manually ----------------------------- If you want to cofigure everything yourself, you can deploy runner manually. First you need to create namespace for your future deployment: :: kubectl create namespace gitlab-runner-ns To check your current namespaces: :: kubectl get namespaces Now set created namespace as default: :: kubectl config set-context $(kubectl config current-context) --namespace=gitlab-runner-ns To deployment we will need to create a deployment.yaml, config-map.yaml and secret.yaml. Start with config-map.yaml: :: apiVersion: v1 kind: ConfigMap metadata: name: gitlab-runner-cm namespace: gitlab-runner-ns data: config.toml: | concurrent = 10 check_interval = 30 entrypoint: | #!/bin/bash set -xe cp /scripts/config.toml /etc/gitlab-runner/ # Register the runner /entrypoint register --non-interactive \ --url $GITLAB_URL \ --executor kubernetes # Start the runner /entrypoint run --user=gitlab-runner \ --working-directory=/home/gitlab-runner And create config map with: :: kubectl create -f config-map.yaml For sake of not showing your token in clear in your deployment file we need to create secret.yaml with token as base 64 string: :: echo -n "your_token" | base64 :: apiVersion: v1 kind: Secret metadata: name: gitlab-runner-secret namespace: gitlab-runner-ns type: Opaque data: runner-registration-token: Now, create secret with: :: kubectl create --validate -f secret.yaml And finally deployment.yaml file: :: apiVersion: extensions/v1beta1 kind: Deployment metadata: name: gitlab-runner namespace: gitlab-runner-ns spec: replicas: 1 selector: matchLabels: name: gitlab-runner template: metadata: labels: name: gitlab-runner spec: containers: - name: gitlab-runner image: gitlab/gitlab-runner:alpine-v9.3.0 command: ["/bin/bash", "/scripts/entrypoint"] env: - name: GITLAB_URL value: "https://gitlab.com/" - name: REGISTRATION_TOKEN valueFrom: secretKeyRef: name: gitlab-runner-secret key: runner-registration-token imagePullPolicy: Always volumeMounts: - name: config mountPath: /scripts - name: cacerts mountPath: /etc/gitlab-runner/certs readOnly: true restartPolicy: Always volumes: - name: config configMap: name: gitlab-runner-cm - name: cacerts hostPath: path: /var/mozilla For creating runners gitlab needs ClusterRoleBinding with cluster-admin role. So before deploying we creating cluster role: :: kubectl create clusterrolebinding gitlab-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccounts --namespace=gitlab-runner-ns And now creating deployment: :: kubectl create --validate -f deployment.yaml